<?php
namespace app\index\controller\tan;
class Ret {
    static public function ok($data=[]){
        exit(json_encode([
            "code"=>666,
            "msg"=>"成功",
            "data"=>$data
        ],JSON_UNESCAPED_UNICODE));
    }
    static public function err($code, string $msg=''){
        exit(json_encode([
            "code"=>$code,
            "msg"=>"错误 $msg",
            "data"=>[]
        ], JSON_UNESCAPED_UNICODE));
    }
    /**
     * 判断数组是否为空。为空输出错误并停止执行
     * @param type $array
     * @param type $code
     * @param type $msg
     */
    static public function IfEmpty($array,$code,$msg=''){
        if(empty($array)){
            self::err($code,$msg);
        }
    }
    /**
     * 停止执行。判断是否为空
     * @param type $array
     * @param type $code
     * @param type $msg
     */
    static public function IfEmptyExit($array,$code,$msg=''){
        if(empty($array)){
            self::err($code,$msg);
        }else{
            self::ok($array);
        }
    }

    /**
     * 判断是否恒等与真，不恒等是停止执行
     * @param bool $bool  不为真是就是string类型
     */
    static public function IfNoTrue($bool,$code){
        if($bool !== TRUE){
            self::err($code, $bool);
        }
    }
    /**
     * 停止执行，无论是否为真
     * @param type $bool    true  或 string
     * @param type $code
     */
    static public function IfNoTrueExit($bool,$code){
        if($bool !== TRUE){
            self::err($code, $bool);
        }else{
            self::ok($bool);
        }
    }
    /**
     * 不管真假，停止执行返回数据
     * @param type $data    数据
     * @param type $code
     * @param type $msg
     */
    static public function Exit_($data,$code,$msg=''){
        if($data){
            self::ok($data);
        }else{
            self::err($code, $msg);
        }
    }
    /**
     * 匿名函数
     * @param \Closure $function
     */
    static function Fun(\Closure $function){
        try {
            $data=$function();
            self::ok($data);
        } catch (\Exception $ex) {
            self::err($ex->getCode(), $ex->getMessage());
        }
        
    }
    static function IfFalseExit($data,$code,$msg=''){
        if(! $data){
            self::err($code, $msg);
        }
    }
}
//Ret::Fun(function() use ($PhoneCode){
//            throw new \Exception('dfgsdg' ,10019);
//});